The communications industry is rapidly changing to adjust to emerging technologies and ever increasing customer demand. This customer demand for new applications and increased performance of existing applications is driving communications network and system providers to employ networks and systems having greater speed and capacity (e.g., greater bandwidth). In trying to achieve these goals, a common approach taken by many communications providers is to use packet switching technology. Increasingly, public and private communications networks are being built and expanded using various packet technologies, such as Internet Protocol (IP).
Scalability and performance are extremely important features for routers, especially as Internet traffic increases. The Routing Information Base (RIB) is an essential software component on a router system. It maintains a database of routes from various routing protocols and serves as a central source of routing information for its clients including the Forwarding Information Base (FIB), unicast routing protocols like Open Shortest Path First (OSPF), Intermediate System-Intermediate System (IS-IS), and multicast routing protocols like Protocol Independent Multicast (PIM), Multicast Source Discovery Protocol (MSDP). The RIB provides an interface for clients to receive all updated routes as well as for clients to query the RIB for specific routes and to receive corresponding routing results, as illustrated in FIG. 1. Examples of such routing queries include looking up the nexthop address and interface to reach a destination, and obtaining the best source address to use when sending a packet.
Protocols like PIM, BGP need up-to-date routing information to operate. For example, PIM needs to track changes to unicast reachability information for every unicast IP address in its multicast topology table (i.e., the root nodes for the multicast distribution trees). The faster PIM learns about a change the less time it takes for multicast to converge. Polling the RIB is one possibility for tracking the required changes. However, this leads to inefficient computation and high latencies for propagation of changes, particularly for large scale applications. Also, polling of the RIB to extract the required routes from the RIB consumes resources of both the RIB and client processes, which may create performance issues as the number of client protocols increase and the number of routes maintained increase due to increased number of nodes using a particular routing protocol or other factors. Desired are new mechanisms to provide route updates to the clients.